using Unity.Burst;
using Unity.Jobs;

// 使用 Burst 编译器对该 Job 进行优化
// 揭开的地雷
[BurstCompile(FloatPrecision.Standard, FloatMode.Fast)]
struct RevealMinesAndMistakesJob : IJobFor
{
    // 一个 Grid 类型的公开字段，表示当前的游戏网格
    public Grid grid;

    // Job 的执行方法
    // 参数 int i 表示当前正在处理的元素的索引（通常是格子的索引）
    public void Execute (int i)
    {
        // 对索引为 i 的格子进行状态更新，使用 grid[i].With(...) 方法（可能是基于位标志或状态模式的更新）
        // 逻辑如下：
        // 如果当前格子的状态是 "标记为确定的地雷或真的是地雷"（CellState.MarkedSureOrMine），
        // 则将该格子状态设置为 "已揭示"（CellState.Revealed）
        // 否则，将该格子状态设置为 "零"（CellState.Zero，可能表示未标记、非地雷、未揭示等默认状态）
        grid[i] = grid[i].With(
            grid[i].Is(CellState.MarkedSureOrMine) ? CellState.Revealed : CellState.Zero
        );
    }
}